package cn.com.gome.framework.utils;

/**
 * @ClassName: cn.com.gome.framework.utils
 * @Description: ${TODO}
 * Created by wangheming on 2017/12/1 11:55.
 */

import cn.com.gome.framework.dao.entity.TblProjectBasicInfo;
import cn.com.gome.framework.dao.mapper.ser.TblProjectBasicInfoSerMapper;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.List;

/**
 * web应用监听器
 */
public class MyServletContextListener implements ServletContextListener {

    @Autowired
    private TblProjectBasicInfoSerMapper tblProjectBasicInfoSerMapper;

    // 应用监听器的销毁方法
    @Override
    public void contextDestroyed(ServletContextEvent event){
        ServletContext sc = event.getServletContext();
        // 在整个web应用销毁之前调用，将多有应用空间所设置的内容清空
        sc.removeAttribute("dataSource");
        System.out.println("销毁工作完成。。。");
    }
    // 应用监听器的初始化方法
    @Override
    public void contextInitialized(ServletContextEvent event) {

        TblProjectBasicInfo tblProjectBasicInfo = new TblProjectBasicInfo();

        List<TblProjectBasicInfo> tblProjectBasicInfos = tblProjectBasicInfoSerMapper.queryList(tblProjectBasicInfo);
        System.out.println(tblProjectBasicInfo);

        // 通过这个事件可以获取整个应用空间
        // 在整个web应用下面启动的时候做一些初始化的内容添加工作
        ServletContext sc = event.getServletContext();
        // 设置一些基本的内功；比如一些蚕食或者是一些固定的对象
        // 创建DataSource对象，连接池技术dbcp
        BasicDataSource bds = new BasicDataSource();
        bds.setDriverClassName("com.mysql.jdbc.Driver");
        bds.setUrl("jdbc:mysql://localhost:3306/hibernate");
        bds.setUsername("root");
        bds.setPassword("root");
        bds.setMaxActive(10);//最大连接数
        bds.setMaxIdle(5);// 最大管理数
        // bds.setMaxWait(maxWait); 最大等待时间
        // 把 DataSource 放入ServletContext空间中，
        // 供整个web应用的使用(获取数据库连接)
        sc.setAttribute("dataSource", bds);
        System.out.println("应用监听器初始化工作完成...");
        System.out.println("已经创建DataSource...");
    }

}
